package main

import (
	"fmt"
	"runtime"
	"time"
)

func main() {
	// 1. 观察 G-P-M 数量
	fmt.Printf("GOMAXPROCS=%d  NumCPU=%d\n", runtime.GOMAXPROCS(0), runtime.NumCPU())

	// 2. 制造远超 P 数量的 goroutine，看调度器切换
	for i := 0; i < runtime.NumCPU()*20; i++ {
		go func(id int) {
			for {
				// 纯 CPU 消耗，强制抢占
				for j := 0; j < 1e7; j++ {
				}
				time.Sleep(10 * time.Millisecond)
			}
		}(i)
	}
	time.Sleep(2 * time.Second)
	fmt.Println("2s 内所有 G 已被调度器分派到 P 上运行")
}
